home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / jcool01.zip / TEST_NT.C < prev    next >
C/C++ Source or Header  |  1992-09-28  |  9KB  |  242 lines

  1. //
  2. // Copyright (C) 1991 Texas Instruments Incorporated.
  3. //
  4. // Permission is granted to any individual or institution to use, copy, modify,
  5. // and distribute this software, provided that this complete copyright and
  6. // permission notice is maintained, intact, in all copies and supporting
  7. // documentation.
  8. //
  9. // Texas Instruments Incorporated provides this software "as is" without
  10. // express or implied warranty.
  11. //
  12.  
  13. #include <test.h>
  14. #include <cool/N_Node.h>
  15. #include <cool/D_Node.h>
  16. #include <cool/N_Tree.h>
  17.  
  18. #include <cool/Vector.C>
  19. #include <cool/N_Node.C>
  20. #include <cool/D_Node.C>
  21. #include <cool/N_Tree.C>
  22.  
  23. void test_NN_int () {
  24.   CoolN_Node<int,3>& node1 = *(new CoolN_Node<int,3>(7));
  25.   TEST ("CoolN_Node<int,3> node1(7)", node1.get(), 7); 
  26.   CoolN_Tree<CoolN_Node<int,3> > n1(node1);
  27.   TEST ("CoolN_Tree<CoolN_Node,int,3> n1(node1)",n1.count(),1);
  28.   TEST ("n1.reset()",(n1.reset(),1),1);
  29.   TEST ("n1.next()",n1.next(),TRUE);
  30.   TEST ("n1.value()",n1.value(),7);
  31.   CoolN_Node<int,3>& node2 = *(new CoolN_Node<int,3>(3));
  32.   TEST ("CoolN_Node<int,3> node2(3)", node2.get(), 3);
  33.   CoolN_Node<int,3>& node3 = *(new CoolN_Node<int,3>(8));
  34.   TEST ("CoolN_Node<int,3> node3(8)", node3.get(), 8);
  35.   CoolN_Node<int,3>& node4 = *(new CoolN_Node<int,3>(9));
  36.   TEST ("CoolN_Node<int,3> node4(9)", node4.get(), 9);
  37.   CoolN_Node<int,3>& node5 = *(new CoolN_Node<int,3>(4));
  38.   TEST ("CoolN_Node<int,3> node5(4)", node5.get(), 4);
  39.   CoolN_Node<int,3>& node6 = *(new CoolN_Node<int,3>(2));
  40.   TEST ("CoolN_Node<int,3> node6(2)", node6.get(), 2);
  41.   TEST ("n1[0]=&node6",(n1[0]=&node6,n1[0]==&node6),1);
  42.   TEST ("n1[1]=&node3",(n1[1]=&node3,n1[1]==&node3),1);
  43.   TEST ("n1[2]=&node4",(n1[2]=&node4,n1[2]==&node4),1);
  44.   TEST ("node6[0]=&node2", (node6[0]=&node2,node6[0]==&node2),1);
  45.   TEST ("node3[0]=&node5", (node3[0]=&node5,node3[0]==&node5),1);
  46.   TEST ("n1.count()", n1.count(), 6);
  47.   TEST ("n1.traversal()=PREORDER",(n1.traversal()=PREORDER,n1.traversal()),PREORDER);
  48.   TEST ("n1.reset()",(n1.reset(),1),1);
  49.   TEST ("n1.next()",n1.next(),TRUE);
  50.   TEST ("n1.value()",n1.value(),7);
  51.   TEST ("n1.next()",n1.next(),TRUE);
  52.   TEST ("n1.value()",n1.value(),2);
  53.   TEST ("n1.next()",n1.next(),TRUE);
  54.   TEST ("n1.value()",n1.value(),3);
  55.   TEST ("n1.next()",n1.next(),TRUE);
  56.   TEST ("n1.value()",n1.value(),8);
  57.   TEST ("n1.prev()",n1.prev(),TRUE);   // test backing up in the middle
  58.   TEST ("n1.value()",n1.value(),3);
  59.   TEST ("n1.next()",n1.next(),TRUE);
  60.   TEST ("n1.value()",n1.value(),8);
  61.   TEST ("n1.next()",n1.next(),TRUE);
  62.   TEST ("n1.value()",n1.value(),4);
  63.   TEST ("n1.next()",n1.next(),TRUE);
  64.   TEST ("n1.value()",n1.value(),9);
  65.   TEST ("n1.next()",n1.next(),FALSE);
  66.  
  67.   TEST ("n1.reset()",(n1.reset(),1),1); // PREORDER in revrse order
  68.   TEST ("n1.prev()",n1.prev(),TRUE);
  69.   TEST ("n1.value()",n1.value(),9);
  70.   TEST ("n1.prev()",n1.prev(),TRUE);
  71.   TEST ("n1.value()",n1.value(),4);
  72.   TEST ("n1.prev()",n1.prev(),TRUE);
  73.   TEST ("n1.value()",n1.value(),8);
  74.   TEST ("n1.prev()",n1.prev(),TRUE);
  75.   TEST ("n1.value()",n1.value(),3);
  76.   TEST ("n1.prev()",n1.prev(),TRUE);
  77.   TEST ("n1.value()",n1.value(),2);
  78.   TEST ("n1.prev()",n1.prev(),TRUE);
  79.   TEST ("n1.value()",n1.value(),7);
  80.   TEST ("n1.prev()",n1.prev(),FALSE);
  81.  
  82.   TEST ("n1.traversal()=INORDER",(n1.traversal()=INORDER,n1.traversal()),INORDER);
  83.   TEST ("n1.reset()",(n1.reset(),1),1);
  84.   TEST ("n1.next()",n1.next(),TRUE);
  85.   TEST ("n1.value()",n1.value(),3);
  86.   TEST ("n1.next()",n1.next(),TRUE);
  87.   TEST ("n1.value()",n1.value(),2);
  88.   TEST ("n1.next()",n1.next(),TRUE);
  89.   TEST ("n1.value()",n1.value(),7);
  90.   TEST ("n1.prev()",n1.prev(),TRUE);   // test backing up in the middle
  91.   TEST ("n1.value()",n1.value(),2);
  92.   TEST ("n1.next()",n1.next(),TRUE);
  93.   TEST ("n1.value()",n1.value(),7);
  94.   TEST ("n1.next()",n1.next(),TRUE);
  95.   TEST ("n1.value()",n1.value(),4);
  96.   TEST ("n1.next()",n1.next(),TRUE);
  97.   TEST ("n1.value()",n1.value(),8);
  98.   TEST ("n1.next()",n1.next(),TRUE);
  99.   TEST ("n1.value()",n1.value(),9);
  100.   TEST ("n1.next()",n1.next(),FALSE);
  101.  
  102.   TEST ("n1.reset()",(n1.reset(),1),1); // INORDER in reverse order
  103.   TEST ("n1.prev()",n1.prev(),TRUE);
  104.   TEST ("n1.value()",n1.value(),9);
  105.   TEST ("n1.prev()",n1.prev(),TRUE);
  106.   TEST ("n1.value()",n1.value(),8);
  107.   TEST ("n1.prev()",n1.prev(),TRUE);
  108.   TEST ("n1.value()",n1.value(),4);
  109.   TEST ("n1.prev()",n1.prev(),TRUE);
  110.   TEST ("n1.value()",n1.value(),7);
  111.   TEST ("n1.prev()",n1.prev(),TRUE);
  112.   TEST ("n1.value()",n1.value(),2);
  113.   TEST ("n1.prev()",n1.prev(),TRUE);
  114.   TEST ("n1.value()",n1.value(),3);
  115.   TEST ("n1.prev()",n1.prev(),FALSE);
  116.  
  117.   TEST ("n1.traversal()=POSTORDER",(n1.traversal()=POSTORDER,n1.traversal()),POSTORDER);
  118.   TEST ("n1.reset()",(n1.reset(),1),1);
  119.   TEST ("n1.next()",n1.next(),TRUE);
  120.   TEST ("n1.value()",n1.value(),3);
  121.   TEST ("n1.next()",n1.next(),TRUE);
  122.   TEST ("n1.value()",n1.value(),2);
  123.   TEST ("n1.next()",n1.next(),TRUE);
  124.   TEST ("n1.value()",n1.value(),4);
  125.   TEST ("n1.prev()",n1.prev(),TRUE);  // test backing up in the middle
  126.   TEST ("n1.value()",n1.value(),2);
  127.   TEST ("n1.next()",n1.next(),TRUE);
  128.   TEST ("n1.value()",n1.value(),4);
  129.   TEST ("n1.next()",n1.next(),TRUE);
  130.   TEST ("n1.value()",n1.value(),8);
  131.   TEST ("n1.next()",n1.next(),TRUE);
  132.   TEST ("n1.value()",n1.value(),9);
  133.   TEST ("n1.next()",n1.next(),TRUE);
  134.   TEST ("n1.value()",n1.value(),7);
  135.   TEST ("n1.next()",n1.next(),FALSE);
  136.  
  137.   TEST ("n1.reset()",(n1.reset(),1),1); // POSTORDER in reverse order
  138.   TEST ("n1.prev()",n1.prev(),TRUE);
  139.   TEST ("n1.value()",n1.value(),7);
  140.   TEST ("n1.prev()",n1.prev(),TRUE);
  141.   TEST ("n1.value()",n1.value(),9);
  142.   TEST ("n1.prev()",n1.prev(),TRUE);
  143.   TEST ("n1.value()",n1.value(),8);
  144.   TEST ("n1.prev()",n1.prev(),TRUE);
  145.   TEST ("n1.value()",n1.value(),4);
  146.   TEST ("n1.prev()",n1.prev(),TRUE);
  147.   TEST ("n1.value()",n1.value(),2);
  148.   TEST ("n1.prev()",n1.prev(),TRUE);
  149.   TEST ("n1.value()",n1.value(),3);
  150.   TEST ("n1.prev()",n1.prev(),FALSE);
  151. }
  152.  
  153. void test_DN_int () {
  154.   CoolD_Node<int,3>& node1 = *(new CoolD_Node<int,3>(7));
  155.   TEST ("CoolD_Node<int,3> node1(7)", node1.get(), 7);
  156.   CoolN_Tree<CoolD_Node<int,3> > d1(node1);
  157.   TEST ("CoolN_Tree<CoolD_Node,int,3> d1(node1)",d1.count(),1);
  158.   TEST ("d1.reset()",(d1.reset(),1),1);
  159.   TEST ("d1.next()",d1.next(),TRUE);
  160.   TEST ("d1.value()",d1.value(),7);
  161.   CoolD_Node<int,3>& node2 = *(new CoolD_Node<int,3>(3));
  162.   TEST ("CoolD_Node<int,3> node2(3)", node2.get(), 3);
  163.   CoolD_Node<int,3>& node3 = *(new CoolD_Node<int,3>(8));
  164.   TEST ("CoolD_Node<int,3> node3(8)", node3.get(), 8);
  165.   CoolD_Node<int,3>& node4 = *(new CoolD_Node<int,3>(9));
  166.   TEST ("CoolD_Node<int,3> node4(9)", node4.get(), 9);
  167.   CoolD_Node<int,3>& node5 = *(new CoolD_Node<int,3>(4));
  168.   TEST ("CoolD_Node<int,3> node5(4)", node5.get(), 4);
  169.   CoolD_Node<int,3>& node6 = *(new CoolD_Node<int,3>(2));
  170.   TEST ("CoolD_Node<int,3> node6(2)", node6.get(), 2);
  171.   TEST ("d1[0]=&node6",(d1[0]=&node6,d1[0]==&node6),1);
  172.   TEST ("d1[1]=&node3",(d1[1]=&node3,d1[1]==&node3),1);
  173.   TEST ("d1[2]=&node4",(d1[2]=&node4,d1[2]==&node4),1);
  174.   TEST ("node6[0]=&node2", (node6[0]=&node2,node6[0]==&node2),1);
  175.   TEST ("node3[0]=&node5", (node3[0]=&node5,node3[0]==&node5),1);
  176.   TEST ("d1.count()", d1.count(), 6);
  177.   TEST ("d1.traversal()=PREORDER",(d1.traversal()=PREORDER,d1.traversal()),PREORDER);
  178.   TEST ("d1.reset()",(d1.reset(),1),1);
  179.   TEST ("d1.next()",d1.next(),TRUE);
  180.   TEST ("d1.value()",d1.value(),7);
  181.   TEST ("d1.next()",d1.next(),TRUE);
  182.   TEST ("d1.value()",d1.value(),2);
  183.   TEST ("d1.next()",d1.next(),TRUE);
  184.   TEST ("d1.value()",d1.value(),3);
  185.   TEST ("d1.next()",d1.next(),TRUE);
  186.   TEST ("d1.value()",d1.value(),8);
  187.   TEST ("d1.next()",d1.next(),TRUE);
  188.   TEST ("d1.value()",d1.value(),4);
  189.   TEST ("d1.next()",d1.next(),TRUE);
  190.   TEST ("d1.value()",d1.value(),9);
  191.   TEST ("d1.next()",d1.next(),FALSE);
  192.   TEST ("d1.traversal()=INORDER",(d1.traversal()=INORDER,d1.traversal()),INORDER);
  193.   TEST ("d1.reset()",(d1.reset(),1),1);
  194.   TEST ("d1.next()",d1.next(),TRUE);
  195.   TEST ("d1.value()",d1.value(),3);
  196.   TEST ("d1.next()",d1.next(),TRUE);
  197.   TEST ("d1.value()",d1.value(),2);
  198.   TEST ("d1.next()",d1.next(),TRUE);
  199.   TEST ("d1.value()",d1.value(),7);
  200.   TEST ("d1.next()",d1.next(),TRUE);
  201.   TEST ("d1.value()",d1.value(),4);
  202.   TEST ("d1.next()",d1.next(),TRUE);
  203.   TEST ("d1.value()",d1.value(),8);
  204.   TEST ("d1.next()",d1.next(),TRUE);
  205.   TEST ("d1.value()",d1.value(),9);
  206.   TEST ("d1.next()",d1.next(),FALSE);
  207.   TEST ("d1.traversal()=POSTORDER",(d1.traversal()=POSTORDER,d1.traversal()),POSTORDER);
  208.   TEST ("d1.reset()",(d1.reset(),1),1);
  209.   TEST ("d1.next()",d1.next(),TRUE);
  210.   TEST ("d1.value()",d1.value(),3);
  211.   TEST ("d1.next()",d1.next(),TRUE);
  212.   TEST ("d1.value()",d1.value(),2);
  213.   TEST ("d1.next()",d1.next(),TRUE);
  214.   TEST ("d1.value()",d1.value(),4);
  215.   TEST ("d1.next()",d1.next(),TRUE);
  216.   TEST ("d1.value()",d1.value(),8);
  217.   TEST ("d1.next()",d1.next(),TRUE);
  218.   TEST ("d1.value()",d1.value(),9);
  219.   TEST ("d1.next()",d1.next(),TRUE);
  220.   TEST ("d1.value()",d1.value(),7);
  221.   TEST ("d1.next()",d1.next(),FALSE);
  222.   TEST ("d1.clear(),d1.count()",(d1.clear(),d1.count()), 0)
  223. }
  224.  
  225. void test_leak () {
  226.   for (;;) {
  227.     test_NN_int ();
  228.     test_DN_int ();
  229.   }
  230. }
  231.  
  232. int main () {
  233.   START("CoolN_Tree");
  234.   test_NN_int ();
  235.   test_DN_int ();
  236. #if LEAK
  237.   test_leak ();
  238. #endif
  239.   SUMMARY ();
  240.   return 0;
  241. }
  242.